[PATCH] [JITLink] Always unmap standard segments in InProcessMemoryManager::deallocat...
authorMin-Yih Hsu <min.hsu@sifive.com>
Sat, 17 Feb 2024 00:19:56 +0000 (16:19 -0800)
committerSylvestre Ledru <sylvestre@debian.org>
Sat, 5 Apr 2025 20:24:44 +0000 (22:24 +0200)
commitf45c85994e0d5bbac8093277d40001def456ec18
tree2bc1a13f4b4321265efd2ec79f23708db8fb0811
parenta6d0dabbb181de53ad48f197ce409b8ad4403868
[PATCH] [JITLink] Always unmap standard segments in InProcessMemoryManager::deallocate (#81943)

Right now InProcessMemoryManager only releases a standard segment (via
sys::Memory::releaseMappedMemory) in `deallocate` when there is a
DeallocAction associated, leaving residual memory pages in the process
until termination.
Despite being a de facto memory leak, it won't cause a major issue if
users only create a single LLJIT instance per process, which is the most
common use cases. It will, however, drain virtual memory pages if we
create thousands of ephemeral LLJIT instances in the same process.

This patch fixes this issue by releasing every standard segments
regardless of the attached DeallocAction.

Gbp-Pq: Name rv64-fix-mm-leak.diff
llvm/lib/ExecutionEngine/JITLink/JITLinkMemoryManager.cpp